﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using MontagsmalerApp.Utils;
using System.IO;
using MontagsmalerApp.Models;

namespace MontagsmalerApp
{
	/// <summary>
	/// Eine Sammlung an Begriffen für das Montagsmalerspiel.
	/// </summary>
	public class Begriffsammlung
	{
		private IList<Begriff> alleBegriffe = new List<Begriff>();

		/// <summary>
		/// Fügt den Begriff zur Sammlung hinzu.
		/// </summary>
		/// <param name="neuerBegriff"></param>
		public void Add(Begriff neuerBegriff)
		{
			foreach (Begriff begriff in alleBegriffe)
				if (begriff.Begriffstext.ToLower() == neuerBegriff.Begriffstext.ToLower())
					return;

			alleBegriffe.Add(neuerBegriff);
		}

		/// <summary>
		/// Lädt die Begriffe.
		/// </summary>
		public void LoadBegriffeFromXml()
		{
      if (File.Exists(ConfigurationParameters.GetBegriffeSpeicherort()))
      {
        XDocument xDoc = XDocument.Load(ConfigurationParameters.GetBegriffeSpeicherort());

        IEnumerable<Begriff> childList = from el in xDoc.Root.Elements()
                                         select new Begriff { ID = el.Element("ID").Value, Begriffstext = el.Element("Inhalt").Value };
        foreach (Begriff b in childList)
        {
          Add(b);
        }

        //foreach (XElement e in childList)
        //{
        //  Begriff b = new Begriff();
        //  b.ID = "";
        //  b.Begriffstext = "";
        //
        //  Add(b);
        //}
      }
		}

		/// <summary>
		/// Liefert eine Liste mit allen Begriffen zurück.
		/// </summary>
		/// <returns></returns>
		public IList<Begriff> GetAll()
		{
      IList<Begriff> result = new List<Begriff>();
			foreach (var item in alleBegriffe)
				result.Add(item);

			return result;
		}
	}
}
